#define _CRT_SECURE_NO_WARNINGS 
#include<stdio.h>
#include<stdlib.h>

//void test()
//{
//	char* str = (char*)malloc(100);
//	strcpy(str, "hello");
//	if (str != NULL)
//	{
//		strcpy(str, "world");
//		printf(str);
//	}
//	printf(str);
//	free(str);
//	str = NULL;
//}
//
//int main()
//{
//	test();
//	return 0;
//}


struct S
{
	int n;
	int* arr;
};

int main()
{
	struct S* ps = (struct S*)malloc(sizeof(struct S));
	if (ps == NULL)
	{
		perror(malloc);
		return 1;
	}
	int* tmp = (int*)malloc(20*sizeof(int));
	if (tmp != NULL)
	{
		ps->arr = tmp;
	}
	else
	{
		return 1;
	}
	ps->n = 100;
	int i = 0;
	for (i = 0; i < 20; i++)
	{
		ps->arr[i] = i + 1;
	}
	tmp = (int*)realloc(ps->arr, 40 * sizeof(int));
	if (tmp == NULL)
	{
		perror(realloc);
		return 1;
	}
	else
	{
		ps->arr = tmp;
	}
	for (i = 0; i < 40; i++)
	{
		printf("%d ", ps->arr[i]);
	}
	free(ps->arr);
	free(ps);
	ps = NULL;
	return 0;
}